package com.sunshine.session;

/**
 * @author Mokairui
 * @description
 * @since 2022/10/30
 */
public interface SqlSession {

    /**
     * 根据指定的SqlID获取一条记录封装对象
     */
    <T> T selectOne(String statement);

    /**
     * 根据指定的SqlID获取一条记录的封装对象, 只不过这个方法容许我们可以给sql传递一些参数
     * 一般在实际中, 这个参数传递的是pojo, 或则Map或则ImmutableMap
     */
    <T> T selectOne(String statement, Object parameter);

    /**
     * 得到映射器, 这个巧妙的使用了泛型, 使得泛型安全
     */
    <T> T getMapper(Class<T> type);

    /**
     * Retrieves current configuration
     * 得到配置
     * @return Configuration
     */
    Configuration getConfiguration();

}
